package com.wr.bq07;

import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;

// 同步队列
// 可理解为最多只能容纳1个元素 就必须等待取出
public class SynchronousQueue08 {
    public static void main(String[] args) {
        SynchronousQueue<String> strings = new SynchronousQueue<>();

        new Thread(()->{
            try {
                System.out.println(Thread.currentThread().getName()+"->put 1");
                strings.put("1");
                System.out.println(Thread.currentThread().getName()+"->put 2");
                strings.put("2");
                System.out.println(Thread.currentThread().getName()+"->put 3");
                strings.put("3");
            }catch (Exception e){
                e.printStackTrace();
            }
        },"T1").start();

        new Thread(()->{
            try {
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName()+"->"+strings.take());
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName()+"->"+strings.take());
                TimeUnit.SECONDS.sleep(3);
                System.out.println(Thread.currentThread().getName()+"->"+strings.take());
            }catch (Exception e){
                e.printStackTrace();
            }
        },"T2").start();
    }


}
